#ifndef VEHPLATEUTILS_H
#define VEHPLATEUTILS_H

#include <QObject>

class VehPlateUtils : public QObject
{
    Q_OBJECT
public:
    explicit VehPlateUtils(QObject *parent = 0);
    ~VehPlateUtils();

public:
    /*!
     * \brief 返回车牌颜色代码对应的车牌颜色（字符串）
     */
    static QString getVehPlateColorDesc(int nCode);

    /*!
     * \brief 返回带颜色的全车牌，如"蓝鲁A12345"。
     */
    static QString getVehicleLicencePlateColorAndNumber(int nPlateColor, const QString &sPlateNum);

    /*!
     * \brief 返回车牌数据是否有效，只在车牌颜色正确且车牌长度足够时返回true
     */
    static bool isValidVehPlate(int nPlateColor, const QString &sPlateNum);

    /*!
     * \brief 将全车牌分离成车牌和车牌颜色2部分
     * \param sPlateNum: 分离出的车牌
     * \param sPlateNumWithColor: 带车牌颜色的全车牌，如"蓝鲁A12345"
     * \return 找到颜色时返回0..3，否则返回-1
     */
    static int seprateVehPlateColorAndNum(QString &sPlateNum, const QString &sPlateNumWithColor);

public:
    /*!
     * \brief 比较两个车牌的相似度
     * \param sPlate1: 车牌1
     * \param sPlate2: 车牌2
     * \return 返回两个车牌的相似度（可改为浮点数，越接近1），数值越大，表示两个车牌越相似
     */
    static int getSimilarity(const QString &sPlate1, const QString &sPlate2);

protected:
    static int getSimilarityForSameLen(const QString &sPlate1, const QString &sPlate2);

signals:

public slots:
};

#endif // VEHPLATEUTILS_H
